Software Requirements Specification

Server Chat

November 19, 2019

Team Members

  • Enrico Bragastini
  • Loris Pesarin
  • Davide Pizzoli
  • Simone Tomelini

Document Control

Change History

Revision Change Date Description of changes
v0.5 05/11/2019 Project Release Plan Complete
v0.7 12/11/2019 Iteration #1 Complete
v0.9 19/11/2019 Iteration #2 Complete
v1.0 19/11/2019 Project Complete

Document Storage

This document is stored in the project's GIT repository at: https://github.com/pizidavi/2020_5BI_team3_Pizzoli/tree/master/docs

Document Owner

Enrico Bragastini is responsible for developing and maintaining this document.

Table of Contents

  • 1. INTRODUCTION
    • 1.1 Overview
    • 1.2 Goals and Objectives
    • 1.3 Scope
  • 2. GENERAL DESIGN CONSTRAINTS
    • 2.1 Product Environment
    • 2.2 User Characteristics
    • 2.3 Potential System Evolution
  • 3. NONFUNCTIONAL REQUIREMENTS
    • 3.1 Operational Requirements
    • 3.2 Performance Requirements
    • 3.3 Security Requirements
    • 3.4 Safety Requirements
    • 3.5 Legal Requirements
  • 4. SYSTEM FEATURES
    • 4.1 Public Message
    • 4.2 Private Message
    • 4.3 Multicast Message
    • 4.4 Getting the online-users list

1. INTRODUCTION

1.1 Overview

Team 3 was commissioned by prof. L. Decarli, a professor at the ITIS G. Marconi instutute, to develop both Client Chat and Server Chat applications to understand the importance of a unique and open protocol and also to learn how to program with network standards and protocols.

1.2 Goals and Objectives

The Goals and Objectives of our applications are: 1. Send a private message to another client 2. Send a public message to all the clients connected to the server 3. Send a multicast message to a specific set of users 4. Check the list of all the online users

1.3 Scope

The scope of our little project is to understand how different network protocols and being able to program a more complex applications that uses these protocols. Moreover, it was necessary to conceive and create a higher-level protocol in order to create different chat-type packets.


2. GENERAL DESIGN CONSTRAINTS

2.1 Product Environment

Since we made two different applications, we have to distinguish the two environments where these two applications will work: - Client App: Will work on user's machine. The end user will only need to open the application on his own machine. There will be a client app for each user. - Server App: Will work on a central server machine. There will only be a single server application for each "chat environment"

2.2 User Characteristics

Since it is a simple Chat Application, all the users will be equated. If we want, there will be a system administrator, in charge of keeping under control the server application.

2.3 Potential System Evolution

Since it is a simple Chat Application for learning purposes, no future system update has been planned so far.


3. NONFUNCTIONAL REQUIREMENTS

3.1 Operational Requirements

There are no operational requirements at this time.

3.2 Performance Requirements

No requirements for speed have been set forth.

3.3 Security Requirements

The Server Chat application needs to force clients to sign-up the first time they connect, and to sign-in for each future connection. The server application has to keep track of clients' ip addresses in order to trace back users in case of inappropriate uses.

3.4 Safety Requirements

No safety requirements were identified for this application.

Since it is an application made for learning purposes only and used in a school private network, no legal requirement is needed.


4. SYSTEM FEATURES

4.1 Public Message

A Client can send a public message to every online Client, and this is made possible by a specific "packet type" from our custom-made chat protocol.

packet-type 20: Sending Public Message
    CL → SV [20][LEN][Text]

packet-type 21: Receiving Public Message
    SV → CL [21][LEN][Addresser][0][Text]

4.2 Private Message

A Client can send a private message to another Client, by using these packets from our custom-made chat protocol:

packet-type 22: Sending Private Message
    CL → SV [22][LEN][Addressee][0][Text]

packet-type 23: Receiving Private Message
    SV → CL [23][LEN][Addresser][0][Text]

4.3 Multicast Message

A Client can send a message to a specific subset of clients, by using these packets from our custom-made chat protocol:

packet-type 24: Sending Multicast Message
    CL → SV [24][LEN][Addressee][0][Addressee][0]...[Text]

packet-type 25: Receiving Multicast Message
    SV → CL [25][LEN][Addresser][0][Text]

4.4 Getting the online-users list

A Client can ask the Server to sen him the list of all the online users, by using these packets from our custom-made chat protocol:

packet-type 42: Requesting Online Users List
    CL → SV [42][LEN]

packet-type 43: Receiving Online Users List
    SV → CL [43][LEN][User][0][User]...